home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1997 September / Macworld (1997-09).dmg / Serious Software / Cherwell Scientific Demos / pro Fit / pro Fit 5.0 demo (fpu).sea / pro Fit 5.0 demo (fpu) / Functions & Programs / •Gadgets / drawing macros / oval < prev    next >
Text File  |  1996-06-01  |  1KB  |  57 lines

  1.  This program draws an oval shape at the last clicked point in the drawing
  2.  window. The oval shape is drawn using a smooth polygon.
  3.  
  4.  The dimensions and orientation of the oval are set in the procedure
  5.  Initialize, below.
  6.  
  7.  To use the program, hit cmd-L (or click the Add button), look at its 
  8.     keyboard equivalent in the Misc menu, clik in the drawing window, 
  9.     and run the program. Then click somewhere else and run the program again. 
  10. }
  11.  
  12.  
  13.  
  14. program Oval;
  15. var h,v,majorAxis,minorAxis,x,ang;
  16.  
  17. procedure initialize;
  18. begin
  19.     majorAxis:=50;            { major axis of the ellipse }
  20.     minorAxis:=10;            { minor axis of the ellipse }
  21.     ang:=10;                                    { orientation }
  22.     
  23.     x:=1-tan(pi/8)*2;
  24.     ang:=ang*pi/180;
  25. end;
  26.  
  27. procedure l(x,y:real);
  28. begin
  29.     line(cos(ang)*x+sin(ang)*y,-sin(ang)*x + cos(ang)*y);
  30. end;
  31.  
  32. procedure m(x,y:real);
  33. begin
  34.     move(cos(ang)*x+sin(ang)*y,-sin(ang)*x + cos(ang)*y);
  35. end;
  36.  
  37.  
  38. begin
  39.           GetClickedCoord(h,v);
  40.           v:=v-minorAxis;
  41.              {DrawEllipse(h-2*majorAxis,v,h+2*majorAxis,v+4*minorAxis);}
  42.     openpoly(1,1);
  43.     moveto(h,v);
  44.     m(0,-minorAxis);
  45.     l(majorAxis*(1-x),0);
  46.     l(majorAxis*(1+x),minorAxis*(1+x));
  47.     l(0,2*minorAxis*(1-x));
  48.     l(-majorAxis*(1+x),minorAxis*(1+x));
  49.     l(-2*majorAxis*(1-x),0);
  50.     l(-majorAxis*(1+x),-minorAxis*(1+x));
  51.     l(0,-2*minorAxis*(1-x));
  52.     l(majorAxis*(1+x),-minorAxis*(1+x));
  53.     l(majorAxis*(1-x),0);
  54.     closepoly;
  55. end;
  56.